#include <iostream>
#pragma once
#include <mysql/mysql.h>
#include <string>
#define HOST "127.0.0.1"
#define USER "root"
#define PASSWD ""
#define DB "test_db"
#define PORT 3306
int main()
{
    // 初始化mysql句柄
    MYSQL* mysql = mysql_init(nullptr);
    // 连接服务器
    if(mysql_real_connect(mysql,HOST,USER,PASSWD,DB,PORT,nullptr,0) == nullptr)
    {
        printf("connect mysql server failed: %s\n",mysql_errno(mysql));
        mysql_close(mysql);
        return -1;
    }

    // 设置客户端字符集
    if(mysql_set_character_set(mysql,"utf8") != 0)
    {
        printf("set mysql client character_set error: %s\n",mysql_errno(mysql));
        mysql_close(mysql);
        return -1;
    }

    // 选择要操作的数据库
    //由于我们在连接数据库时的默认选择数据库就是test_db，无需再次选择

    //执行SQL插入语句，插入三条记录
    if(mysql_query(mysql,"insert into stu values(null,18,'张三')") != 0)
    {
        printf("ins error: %s\n",mysql_errno(mysql));
        mysql_close(mysql);
        return -1;
    }
    if(mysql_query(mysql,"insert into stu values(null,19,'李四')") != 0)
    {
        printf("ins error: %s\n",mysql_errno(mysql));
        mysql_close(mysql);
        return -1;
    }
    if(mysql_query(mysql,"insert into stu values(null,20,'王五')") != 0)
    {
        printf("ins error: %s\n",mysql_errno(mysql));
        mysql_close(mysql);
        return -1;
    }
    //之后是查询的步骤
    //执行SQL查询语句
    if(mysql_query(mysql,"select * from stu") != 0)
    {
        printf("sel error: %s\n",mysql_errno(mysql));
        mysql_close(mysql);
        return -1;
    }
    //保存结果到本地结果集中
    MYSQL_RES* res = mysql_store_result(mysql);
    if(res == nullptr)
    {
        mysql_close(mysql);
        return -1;
    }
    //获取结果集的行列数
    int num_row = mysql_num_rows(res);
    int num_col = mysql_num_fields(res);
    //遍历保存好的结果集
    for(int i = 0 ; i < num_row ; ++i)
    {
        MYSQL_ROW row = mysql_fetch_row(res);
        for(int j = 0 ; j < num_col ; ++j)
        {
            std::cout << row[j] << "  ";
        }
        std::cout << std::endl;
    }
    //释放结果集
    mysql_free_result(res);
    //关闭连接
    mysql_close(mysql);
    return 0;
}